//
//  STStatusListViewModel.swift
//  STVVeibo
//
//  Created by leergou on 16/7/24.
//  Copyright © 2016年 WhiteHouse. All rights reserved.
//

import UIKit

class STStatusListViewModel: NSObject {
    
    // 全局访问的数组
    lazy var statusList:[STStatusViewModel] = [STStatusViewModel]()

}

extension STStatusListViewModel{
    
    // 获取微博首页数据
    func loadHomeData(isPullUp:Bool, completed:(isSuccess: Bool, count: Int)->()){
        
        /*
        - 如果是上啦记载更多  需要给服务器maxid   sinceid == 0
        - 如果是下拉刷新  需要给服务器sinceId   maxId == 0
        - 如果sinceid == 0  maxid == 0  默认服务器返回最新的20条数据
        */
        
        var maxId:Int64 = 0
        var sinceId: Int64 = 0
        // 上啦加载更多
        if isPullUp {
            maxId = statusList.last?.status?.id ?? 0
            // 因为服务器返回来重复数据 需要程序员自己处理
            if maxId > 0 {
                maxId -= 1
            }
        }else {
            // 下拉刷新
            sinceId = statusList.first?.status?.id ?? 0
        }
        
        // 利用 STStatusDAL 类来请求数据,要首先检查缓存!
        STStatusDAL.checkCache(sinceId, maxId: maxId) { (response) -> () in
            // 判断是否为 nil
            guard let res = response else {
                completed(isSuccess: false, count: 0)
                return
            }
            
            // 定义一个临时可变数组
            var tempArray: [STStatusViewModel] = [STStatusViewModel]()
            // 遍历数组
            for dic in res {
                // 创建一个模型
                let status = STStatus(dict: dic)
                // 创建一个 viewModel
                let statusViewModel = STStatusViewModel(status: status)
                // 添加到数组
                tempArray.append(statusViewModel)
            }
        
            // 上啦加载更多
            if isPullUp {
                self.statusList = self.statusList + tempArray
                completed(isSuccess: true, count: -1)
            }else {
                // 下拉刷新
                self.statusList = tempArray + self.statusList
                completed(isSuccess: true, count: tempArray.count)
            }
        }
    }
}

    

